package com.yidu.t299.service.chr.impl;

import com.yidu.t299.dao.chr.GradeMapper;
import com.yidu.t299.domain.chr.Grade;
import com.yidu.t299.service.chr.GradeBiz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author twj
 * @version 1.0.0
 */
@Service
@Transactional
public class GradeBizImpl implements GradeBiz {
    @Autowired
    private GradeMapper gradeMapper;

    /**
     * 根据实体类各属性值生成条件字符串
     *
     * @param studentName 学员姓名
     * @param schoolName 校区名称
     * @return 条件字符串
     */
    @Override
    public String getCondition(String studentName,String schoolName) {
        // 定义条件字符串变量，初始值为空格字符串
        String condition = " ";
        //自定义过滤条件(学员名称和校区名称)
        if (studentName != null && studentName.trim().length() != 0) {
            condition += " and sm.student_name like '%" + studentName+"%'";
        }
        if (schoolName != null && schoolName.trim().length() != 0) {
            condition += " and s.school_name like '%" + schoolName+"%'";
        }
        // 返回条件字符串
        return condition;
    }

    /**
     * 根据主键删除成绩信息
     *
     * @param gradeId 主键
     * @return 影响的行数(1 : 成功)
     */
    @Override
    public int deleteByPrimaryKey(Integer gradeId) {
        return gradeMapper.deleteByPrimaryKey(gradeId);
    }

    /**
     * 添加成绩信息，因为实体类不能对应，所以要分开传参
     *
     * @param gradeId     成绩编号
     * @param studentId   学员编号
     * @param lessonId    课程编号
     * @param lessonGrade 课程成绩
     * @return 影响的行数(1 : 成功)
     */
    @Override
    public int insert(Integer gradeId, Integer studentId, Integer lessonId, Integer lessonGrade) {
        return gradeMapper.insert(gradeId, studentId, lessonId, lessonGrade);
    }

    /**
     * 按主键查询
     *
     * @param gradeId 主键
     * @return 成绩对象
     */
    @Override
    public Grade selectByPrimaryKey(Integer gradeId) {
        return gradeMapper.selectByPrimaryKey(gradeId);
    }

    /**
     * 按条件分页查询创建数据集合
     * 多表关联的关系： grade -> lesson & student_manage -> school & class
     *
     * @param rows      每页的行数
     * @param page      页码
     * @param condition 条件参数
     * @return 成绩对象集合
     */
    @Override
    public List<Grade> selectByPage(int rows, int page, String condition) {
        return gradeMapper.selectByPage(rows, page, condition);
    }

    /**
     * 按条件查询grade表中数据行数
     *
     * @param condition 条件参数
     * @return 数据行数
     */
    @Override
    public int selectCount(String condition) {
        return gradeMapper.selectCount(condition);
    }

    /**
     * 修改成绩信息，因为实体类不能对应，所以要分开传参
     *
     * @param gradeId     成绩编号
     * @param studentId   学员编号
     * @param lessonId    课程编号
     * @param lessonGrade 课程成绩
     * @return 影响的行数(1 : 成功)
     */
    @Override
    public int updateByPrimaryKey(Integer gradeId, Integer studentId, Integer lessonId, Integer lessonGrade) {
        return gradeMapper.updateByPrimaryKey(gradeId, studentId, lessonId, lessonGrade);
    }
}
